Programming an automation system is a complex task due to dynamic nature of the system. The developer must know what the consequences of the various programming elements will be in their proper context. In conventional systems, the programmer has to keep this knowledge in his or her head. Simulation tools may be used to help developers make educated guesses regarding runtime operations. However, transfer of knowledge gained through simulation to the real-world environment is difficult and error-prone. Thus, it is desired to provide a system which allows developers to create logic within the context of a simulated environment which may be transferred directly between the simulation and real-world environment.
One challenging aspect of providing a link between simulation and real-world automation environments is determining the degree to which real-world behavior is simulated. In principle, the entire real-world environment could be simulated; however, such a simulation would be time-intensive to create and costly to operate. It is therefore advantageous to have the simulation for more complicated elements to be programmed a priori by experts. One particular item that is challenging to incorporate into automation applications is a visual sensor (e.g., a camera). Such sensors typically include complex hardware and software to perform image detection and processing. Using conventional techniques, a detailed simulation of applications using this kind of hardware and software would require advanced graphical programming in order to test even the most basic sensor processing algorithms. Normally, simulation would not be attempted and all testing of automation code would be done on actual hardware. Thus, it is desired to provide a more convenient way of developing vision sensor applications within simulated automation that is tightly coupled to its real-world counterpart so that automation logic programmed in simulation can run in the real world.